package com.sse.sensor.impl;

import java.util.Random;

import com.sse.sensor.Sensor;
import com.sse.sensor.TipoSensor;

/**
 * Clase que simula el funcionamiento de un sensor de Humo.
 * @author Jean Paul Manjarres Correal.
 *
 */
public class SensorHumo extends Sensor {
	
	/** Constante que define el evento de humo detectado. */
	public static final long HUMO = 1;
	
	/** Objeto random para el manejo de numeros aleatorios. */
	private Random random;	
	private boolean humoActivo = false;
	private int iteracionesHumo = 0;
	
	public SensorHumo() {
		random = new Random();	
		this.tipoSensor = TipoSensor.HUMO;
	}

	@Override
	public long calcularEvento() {
		
		if(humoActivo){
			iteracionesHumo++;
			if(iteracionesHumo >= 40){
				iteracionesHumo =0;
				humoActivo = false;
			}
			return HUMO;			
		}		
		
		double gaussian = random.nextGaussian();
			
		//3 desviaciones estandar de la media, 1% de probabilidad
		if(Math.abs(gaussian) > 3){			
			humoActivo = true;
			return HUMO;
		}
		else return SIN_EVENTO;
	}
}
